Subsurface geological modeling involves estimating parameters of interest for development planning and production forecasting; when a model has been constructed using these parameters, it is used to make predictions of e.g. flow rates from wells. Parameters used to construct the model can include e.g. porosity and permeability of rock. These parameters are directly measured, e.g. at locations where the subsurface has been penetrated by wells through which various tools are run to take measurements. The reservoir model at the sample locations is conditioned by these sample measurements with no or only slightly attached uncertainty. Between well locations, however, estimates of target parameters with attached measures of uncertainty are required.
Reservoir modeling is a statistical process which produces a potentially infinite number of so-called realizations of a given model. Each realization consists of a matrix comprising several values (representing parameters such as porosity and permeability) associated with each of a large number of cells distributed over the volume of the reservoir. Only for a relatively small number of these cells will the values be known with relative certainty (namely those cells for which the parameters have been measured). For the remaining cells, the values are estimates based on the geostatistical modeling process. Each realization will have a different set of estimated values.
The modeling process results in estimated values which are more reliable for some cells than others; the estimated values also have differing degrees of statistical inter-dependence. The model has a so-called covariance matrix associated with it which contains information about the variance and statistical inter-dependence (covariance) of the estimated values. The covariance matrix has dimensions n×n, where n is the number of uncertainty parameters in the system, e.g. equating to the number of cells in the model, or more if more than one parameter is associated with each cell. The value of the covariance between two data points i and j in the model can be found at the (i,j) coordinate in the covariance matrix. Hence the values (i,i) on the leading diagonal of the matrix will all have the value equal to variance of the ith parameter since each value i will be perfectly correlated with itself, whilst elsewhere the values will range between 0 and the variance.
The model is used to make predictions of various reservoir flow responses such as flow rates and pressures in wells and 4D seismic signatures. Using flow rates as an example, flow rate data will be gathered from the wells over time once the reservoir is in production and will, generally, differ from the predicted values generated by the model. History matching is a process by which new realizations of the model are generated which more accurately predict the correct current flow rates and can therefore be assumed to be intrinsically more accurate and therefore to be able to make more accurate predictions of future flow rates. In any history matching process creating updated realizations, it is important to preserve the statistical data on which the model is based; this means involving the covariance matrix in the updating process.
In history matching, one or more realizations are modified so that the theoretical flow rates (or other dynamic data) which they predict match with, or more closely approximate to, the measured flow rates (or other dynamic data). As mentioned above, for any modification, it is important that the statistical data inherent in the model is preserved.
The so-called Karhunen-Loève expansion may be used for this process:
      m    ^    =      m    +                  ∑                  j          =          1                N            ⁢                        c          j                ⁢                  λ          j                ⁢                  u          j                    
In this expression, a new realization {circumflex over (m)} is generated by adding to the old realization m a summation term for a linear combination of eigenvectors uj of the covariance matrix, the corresponding eigen values λj and modifying coefficients cj for j=1 to N where N is the total number of values in the realization. Each of these eigenvectors has the same dimension as the model but with a different level of detail.                λj—an eigen value (scalar quantity)        uj—an eigenvector (a vector with the same dimension as the model matrix)        cj—a modifying coefficient (scalar quantity)        
The eigenvectors and eigen values are derived from the covariance matrix and represent information about the variance and statistical inter-dependence of the values in any realization from the model. Their inclusion in the Karhunen-Loève expression means that the variance and statistical inter-dependence of the values in the amended realization will be preserved. The variable cj is an artificial input to amend the realization; if cj were set to zero for all terms j, then the summation term would be zero and there would be no amendment of the realization. Algorithms exist which can be used to generate values for cj which result in the flow predictions made by the model being amended in certain ways. However, essentially, the process is one of trial and error to establish a range of values for cj which create an appropriate amendment to the model.
The mathematical process by which the eigenvectors and eigen values are derived from the covariance matrix is known as singular value decomposition (or SVD) of the covariance matrix. SVD is a well known process and is not the subject of this application.
A practical reservoir model will have in excess of a million cells each associated with several values. The covariance matrix for such a model is extremely large; a model with a million cells would have a 1,000,000×1,000,000 covariance matrix or greater. Carrying out SVD on a covariance matrix for a real-life reservoir model is computationally unfeasible at the present time. Therefore, up to now, in order to perform history matching using the Karhunen-Loève expansion, it has been necessary to work on a model with fewer cells where the data has relatively low resolution. This involves taking the large scale model and performing a mathematical process on it to reduce the number of cells, but it results in a model with much lower accuracy and hence less usefulness. Nevertheless, this approach is still very appealing because it can dramatically reduce the number of parameters to be adjusted in the history matching process. It is then easy for the process to be handled by any well known generic optimizers like GA (Genetic Algorithm) or PSO (Particle Swarm Optimization), which treat any optimization problems as black boxes, i.e., just requiring input (parameters) and output (objective functions) configurations.
There is a need for a way of performing a Karhunen-Loève expansion on a model without this reduction in data quality. What is needed is a way of deriving eigenvectors and eigen values for unadulterated model realizations for full scale practical reservoir simulation which is feasible using present day computing capacity.